﻿using System;
using System.Diagnostics;
using System.Linq;
using System.Reflection;

namespace AlgorithmTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // 自动通过反射获取最新的算法类（因为都是按序号排列的），且都包含一个名为Test的函数
            var type = Assembly.GetExecutingAssembly().ExportedTypes
                .Where(x => x.GetInterface("IAlgorithm") != null)
                .OrderByDescending(x => x.Name).First();
            var method = type.GetMethod("Test");
            Console.WriteLine($"算法测试类[{type.Name}]：");
            Console.WriteLine();
            var sw = Stopwatch.StartNew();
            var instance = Activator.CreateInstance(type);
            method.Invoke(instance, null);
            sw.Stop();
            // 如果不想调试最新的可以单独取消注释这个换成对应类名
            //new T_0021_MergeTwoLists().Test();

            Console.WriteLine();
            Console.WriteLine($"执行成功...耗时{sw.ElapsedMilliseconds}ms");
            Console.Read();
        }
    }
}